package model

type SystemSmtpLogSendType int

const (
	SystemSmtpLogSendTypeTime = SystemSmtpLogSendType(1) // 定时发送
)

type SystemSmtpLogStatus int

const (
	SystemSmtpLogStatusPending  = SystemSmtpLogStatus(1) // 待发送
	SystemSmtpLogStatusSending  = SystemSmtpLogStatus(2) // 发送中
	SystemSmtpLogStatusSuccess  = SystemSmtpLogStatus(3) // 发送成功
	SystemSmtpLogStatusFailed   = SystemSmtpLogStatus(4) // 发送失败
	SystemSmtpLogStatusCanceled = SystemSmtpLogStatus(5) // 已取消
)

type SystemSmtpLogBodyType int

const (
	SystemSmtpLogBodyTypeText = SystemSmtpLogBodyType(1) // 文本
	SystemSmtpLogBodyTypeHtml = SystemSmtpLogBodyType(2) // HTML
)

//go:generate go run ../cmd/generate dao --table system_smtp_logs

type SystemSmtpLog struct {
	Model

	SendType     *SystemSmtpLogSendType `gorm:"type:uint;not null;default:1"`              // 发送类型
	SendTime     *int64                 `gorm:"type:uint;not null;default:0"`              // 发送时间
	Provider     *string                `gorm:"type:string;size:64;not null;default:''"`   // 服务提供商名称
	From         *string                `gorm:"type:string;size:255;not null;default:''"`  // 发件人
	To           *string                `gorm:"type:string;size:255;not null"`             // 收件人
	Cc           *string                `gorm:"type:string;size:1000;not null;default:''"` // 抄送人，多个抄送人用逗号分隔
	Bcc          *string                `gorm:"type:string;size:1000;not null;default:''"` // 密送人，多个密送人用逗号分隔
	Subject      *string                `gorm:"type:string;size:255;not null;default:''"`  // 主题
	BodyType     *SystemSmtpLogBodyType `gorm:"type:uint;not null;default:1"`              // 内容类型
	Body         *string                `gorm:"type:string;not null;default:''"`           // 内容
	Attachments  *string                `gorm:"type:string;size:1000;not null;default:''"` // 附件名称，多个附件用逗号分隔
	Status       *SystemSmtpLogStatus   `gorm:"type:uint;not null;default:1"`              // 状态
	FailedReason *string                `gorm:"type:string;size:2000;not null;default:''"` // 失败原因
	CompleteTime *int64                 `gorm:"type:uint;not null;default:0"`              // 完成时间
}

func (cls *SystemSmtpLog) TableName() string {
	return "system_smtp_logs"
}
